package com.sh.gulimall.coupon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/*
*   一、如何使用nacos作为配置中心统一管理配置
*   1.引入依赖
*       <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    2.创建一个bootstrap.properties文件，需要配置当前应用的名字和配置中心的地址
      spring.application.name=nacos-config-example
      spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    3.需要给配置中心默认添加一个叫数据集(Data Id) gulimall-coupon.properties 默认规则，应用名.properties
    4.给 应用名.properties添加任何配置
    5.动态获取配置
      @RefreshScope：动态获取并刷新配置
      @Value("${配置项的名}")：获取到配置
      如果配置中心和当前配置文件中都配置了相同的项，优先使用配置中心的配置
    二、进阶，
    1.命名空间：配置隔离
      默认：public（保留空间）;默认新增的所有配置都在public空间
      1) 开发、测试、生产：利用命名空间来做环境隔离
      注意：在bootstrap.properties；配置上，需要使用哪个命名空间下的配置
      spring.cloud.nacos.config.namespace=cc529c6e-b9fd-4078-8cea-7ad76e219b8d
      2) 每一个微服务之间相互隔离配置，每一个微服务都能创建自己的命名空间，只加载自己命名空间下的所有配置
    2.配置集：所有的配置的集合
    3.配置集ID：类似文件名
      Data ID：文件名
    4.配置分组：
      默认所有的配置集都属于：DEFAULT_GROUP;
      spring.cloud.nacos.config.group=1111
      每个微服务创建自己的命名空间，使用配置配置分组区分环境，dev，test，prod
    5.同时加载多个配置集
      1）微服务任何配置信息，任何配置文件都可以放在配置中心中
      2）只需要bootstrap.properties说明加载配置中心中哪些配置文件即可
         以前spring boot任何方法从配置文件中获取值，都能使用
         配置中心中有的优先使用配置中心中的

* */

@EnableDiscoveryClient
@SpringBootApplication
public class GulimallCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallCouponApplication.class, args);
    }

}
